package org.spider.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.spider.model.entity.SpiderAuthUserEntity;
import org.spider.user.entity.User;
import org.spider.user.entity.UserInfo;
import org.spider.user.entity.UserOauth;
import org.spider.user.excel.UserExcel;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author lzy
 * @since 2022-06-02 15:30:30
 */
public interface SpiderAuthUserService extends IService<SpiderAuthUserEntity> {


    /**
     * 新增或修改用户
     * @param user
     * @return
     */
    boolean submit(User user);

    /**
     * 自定义分页
     *
     * @param page
     * @param user
     * @return
     */
    IPage<User> selectUserPage(IPage<User> page, User user);

    /**
     * 用户信息
     *
     * @param userId
     * @return
     */
    UserInfo userInfo(Long userId);

    /**
     * 用户信息
     *
     * @param tenantId
     * @param account
     * @param password
     * @return
     */
    UserInfo userInfo(String tenantId, String account, String password);

    /**
     * 用户信息
     *
     * @param userOauth
     * @return
     */
    UserInfo userInfo(UserOauth userOauth);

    /**
     * 给用户设置角色
     *
     * @param userIds
     * @param roleIds
     * @return
     */
    boolean grant(String userIds, String roleIds);

    /**
     * 初始化密码
     *
     * @param userIds
     * @return
     */
    boolean resetPassword(String userIds);

    /**
     * 修改密码
     *
     * @param userId
     * @param oldPassword
     * @param newPassword
     * @param newPassword1
     * @return
     */
    boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1);

    /**
     * 获取角色名
     *
     * @param roleIds
     * @return
     */
    List<String> getRoleName(String roleIds);

    /**
     * 获取部门名
     *
     * @param deptIds
     * @return
     */
    List<String> getDeptName(String deptIds);

    /**
     * 导入用户数据
     *
     * @param data
     * @return
     */
    void importUser(List<UserExcel> data);

    /**
     * 获取导出用户数据
     *
     * @param queryWrapper
     * @return
     */
    List<UserExcel> exportUser(Wrapper<User> queryWrapper);

    /**
     * 注册用户
     *
     * @param user
     * @param oauthId
     * @return
     */
    boolean registerGuest(User user, Long oauthId);
}
